package org.tradeinterceptor.modular.strategy.notifier;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.tradeinterceptor.modular.strategy.Notifier;

public class SendMailSSL implements Notifier {

	String user;
	String password;

	public static void main(String[] args) {
		Notifier notifier = new SendMailSSL();
		notifier.sendNotification("Business",
				"Dollar is under the *ss of the frog");
	}

	public void sendNotification(String subject, String msg) {
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.gmail.com");
		props.put("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", "465");

		Session session = Session.getDefaultInstance(props,
				new javax.mail.Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(user, password);
					}
				});

		try {

			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress(user + "@gmail.com"));
			message.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(user + "@gmail.com"));
			message.setSubject(subject);
			message.setText(msg);

			Transport.send(message);

			// System.out.println("Done");

		} catch (MessagingException e) {
			throw new RuntimeException(e);
		}
	}

	@Override
	public void setProperties(Properties properties) {
		this.user = properties
				.getProperty("org.tradeinterceptor.modular.strategy.notifier.SendMailSSL.username");
		this.password = properties
				.getProperty("org.tradeinterceptor.modular.strategy.notifier.SendMailSSL.password");
	}
}